package com.yidu.boss.sys.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @author
 */
public class Fund implements Serializable {
    private String fundId;

    private String founNo;

    private String fundName;

    @DateTimeFormat(pattern="yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    private Date createTime;

    private String custodianId;

    private String custodianName;

    private String trusteeId;

    private String trusteeName;

    private BigDecimal managementFee;

    private BigDecimal hostingFees;

    private Integer fundType;

    private BigDecimal fundScale;

    private BigDecimal IOPV;

    private Integer billingDays;

    @DateTimeFormat(pattern="yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    private Date registerDate;

    private String remark1;

    private Date remark2;

    private String remark3;

    private BigDecimal remark4;

    private static final long serialVersionUID = 1L;

    public String getFundId() {
        return fundId;
    }

    public void setFundId(String fundId) {
        this.fundId = fundId;
    }

    public String getFounNo() {
        return founNo;
    }

    public void setFounNo(String founNo) {
        this.founNo = founNo;
    }

    public String getFundName() {
        return fundName;
    }

    public void setFundName(String fundName) {
        this.fundName = fundName;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public String getCustodianId() {
        return custodianId;
    }

    public void setCustodianId(String custodianId) {
        this.custodianId = custodianId;
    }

    public String getCustodianName() {
        return custodianName;
    }

    public void setCustodianName(String custodianName) {
        this.custodianName = custodianName;
    }

    public String getTrusteeId() {
        return trusteeId;
    }

    public void setTrusteeId(String trusteeId) {
        this.trusteeId = trusteeId;
    }

    public String getTrusteeName() {
        return trusteeName;
    }

    public void setTrusteeName(String trusteeName) {
        this.trusteeName = trusteeName;
    }

    public BigDecimal getManagementFee() {
        return managementFee;
    }

    public void setManagementFee(BigDecimal managementFee) {
        this.managementFee = managementFee;
    }

    public BigDecimal getHostingFees() {
        return hostingFees;
    }

    public void setHostingFees(BigDecimal hostingFees) {
        this.hostingFees = hostingFees;
    }

    public Integer getFundType() {
        return fundType;
    }

    public void setFundType(Integer fundType) {
        this.fundType = fundType;
    }

    public BigDecimal getFundScale() {
        return fundScale;
    }

    public void setFundScale(BigDecimal fundScale) {
        this.fundScale = fundScale;
    }

    public BigDecimal getIOPV() {
        return IOPV;
    }

    public void setIOPV(BigDecimal IOPV) {
        this.IOPV = IOPV;
    }

    public Integer getBillingDays() {
        return billingDays;
    }

    public void setBillingDays(Integer billingDays) {
        this.billingDays = billingDays;
    }

    public Date getRegisterDate() {
        return registerDate;
    }

    public void setRegisterDate(Date registerDate) {
        this.registerDate = registerDate;
    }

    public String getRemark1() {
        return remark1;
    }

    public void setRemark1(String remark1) {
        this.remark1 = remark1;
    }

    public Date getRemark2() {
        return remark2;
    }

    public void setRemark2(Date remark2) {
        this.remark2 = remark2;
    }

    public String getRemark3() {
        return remark3;
    }

    public void setRemark3(String remark3) {
        this.remark3 = remark3;
    }

    public BigDecimal getRemark4() {
        return remark4;
    }

    public void setRemark4(BigDecimal remark4) {
        this.remark4 = remark4;
    }

    @Override
    public boolean equals(Object that) {
        if (this == that) {
            return true;
        }
        if (that == null) {
            return false;
        }
        if (getClass() != that.getClass()) {
            return false;
        }
        Fund other = (Fund) that;
        return (this.getFundId() == null ? other.getFundId() == null : this.getFundId().equals(other.getFundId()))
                && (this.getFounNo() == null ? other.getFounNo() == null : this.getFounNo().equals(other.getFounNo()))
                && (this.getFundName() == null ? other.getFundName() == null : this.getFundName().equals(other.getFundName()))
                && (this.getCreateTime() == null ? other.getCreateTime() == null : this.getCreateTime().equals(other.getCreateTime()))
                && (this.getCustodianId() == null ? other.getCustodianId() == null : this.getCustodianId().equals(other.getCustodianId()))
                && (this.getCustodianName() == null ? other.getCustodianName() == null : this.getCustodianName().equals(other.getCustodianName()))
                && (this.getTrusteeId() == null ? other.getTrusteeId() == null : this.getTrusteeId().equals(other.getTrusteeId()))
                && (this.getTrusteeName() == null ? other.getTrusteeName() == null : this.getTrusteeName().equals(other.getTrusteeName()))
                && (this.getManagementFee() == null ? other.getManagementFee() == null : this.getManagementFee().equals(other.getManagementFee()))
                && (this.getHostingFees() == null ? other.getHostingFees() == null : this.getHostingFees().equals(other.getHostingFees()))
                && (this.getFundType() == null ? other.getFundType() == null : this.getFundType().equals(other.getFundType()))
                && (this.getFundScale() == null ? other.getFundScale() == null : this.getFundScale().equals(other.getFundScale()))
                && (this.getIOPV() == null ? other.getIOPV() == null : this.getIOPV().equals(other.getIOPV()))
                && (this.getBillingDays() == null ? other.getBillingDays() == null : this.getBillingDays().equals(other.getBillingDays()))
                && (this.getRegisterDate() == null ? other.getRegisterDate() == null : this.getRegisterDate().equals(other.getRegisterDate()))
                && (this.getRemark1() == null ? other.getRemark1() == null : this.getRemark1().equals(other.getRemark1()))
                && (this.getRemark2() == null ? other.getRemark2() == null : this.getRemark2().equals(other.getRemark2()))
                && (this.getRemark3() == null ? other.getRemark3() == null : this.getRemark3().equals(other.getRemark3()))
                && (this.getRemark4() == null ? other.getRemark4() == null : this.getRemark4().equals(other.getRemark4()));
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getFundId() == null) ? 0 : getFundId().hashCode());
        result = prime * result + ((getFounNo() == null) ? 0 : getFounNo().hashCode());
        result = prime * result + ((getFundName() == null) ? 0 : getFundName().hashCode());
        result = prime * result + ((getCreateTime() == null) ? 0 : getCreateTime().hashCode());
        result = prime * result + ((getCustodianId() == null) ? 0 : getCustodianId().hashCode());
        result = prime * result + ((getCustodianName() == null) ? 0 : getCustodianName().hashCode());
        result = prime * result + ((getTrusteeId() == null) ? 0 : getTrusteeId().hashCode());
        result = prime * result + ((getTrusteeName() == null) ? 0 : getTrusteeName().hashCode());
        result = prime * result + ((getManagementFee() == null) ? 0 : getManagementFee().hashCode());
        result = prime * result + ((getHostingFees() == null) ? 0 : getHostingFees().hashCode());
        result = prime * result + ((getFundType() == null) ? 0 : getFundType().hashCode());
        result = prime * result + ((getFundScale() == null) ? 0 : getFundScale().hashCode());
        result = prime * result + ((getIOPV() == null) ? 0 : getIOPV().hashCode());
        result = prime * result + ((getBillingDays() == null) ? 0 : getBillingDays().hashCode());
        result = prime * result + ((getRegisterDate() == null) ? 0 : getRegisterDate().hashCode());
        result = prime * result + ((getRemark1() == null) ? 0 : getRemark1().hashCode());
        result = prime * result + ((getRemark2() == null) ? 0 : getRemark2().hashCode());
        result = prime * result + ((getRemark3() == null) ? 0 : getRemark3().hashCode());
        result = prime * result + ((getRemark4() == null) ? 0 : getRemark4().hashCode());
        return result;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", fundId=").append(fundId);
        sb.append(", founNo=").append(founNo);
        sb.append(", fundName=").append(fundName);
        sb.append(", createTime=").append(createTime);
        sb.append(", custodianId=").append(custodianId);
        sb.append(", custodianName=").append(custodianName);
        sb.append(", trusteeId=").append(trusteeId);
        sb.append(", trusteeName=").append(trusteeName);
        sb.append(", managementFee=").append(managementFee);
        sb.append(", hostingFees=").append(hostingFees);
        sb.append(", fundType=").append(fundType);
        sb.append(", fundScale=").append(fundScale);
        sb.append(", IOPV=").append(IOPV);
        sb.append(", billingDays=").append(billingDays);
        sb.append(", registerDate=").append(registerDate);
        sb.append(", remark1=").append(remark1);
        sb.append(", remark2=").append(remark2);
        sb.append(", remark3=").append(remark3);
        sb.append(", remark4=").append(remark4);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append("]");
        return sb.toString();
    }
}